﻿namespace CC.Yacht.Interfaces
{
    /// <summary>
    /// Defines methods and properties for Scorecard objects
    /// </summary>
    public interface IScorecard
    {
        int Aces { get; }
        int Twos { get; }
        int Threes { get; }
        int Fours { get; }
        int Fives { get; }
        int Sixes { get; }

        int UpperSectionBonus { get; }
        int UpperSectionSubtotal { get; }
        int UpperSectionTotal { get; }

        int ThreeOfAKind { get; }
        int FourOfAKind { get; }
        int FullHouse { get; }
        int SmallStraight { get; }
        int LargeStraight { get; }
        int Yacht { get; }
        int Chance { get; }
        int YachtBonuses { get; }

        int LowerSectionTotal { get; }

        int Total { get; }

        User User { get; }

        int GetScoreField(ScoreField scoreField);
        bool IsGameOver();
        bool IsScoreFieldSet(ScoreField scoreField);
        void Reset();
        bool SetScoreField(ScoreField scoreField, Dice dice);
    }
}
